import request from "@/utils/request";

const GAME_BASE_URL = "/api/v1/games";

/**
 * 游戏类型
 */
export type GameCategory = "all" | "action" | "strategy" | "rpg" | "casual" | "adventure";

/**
 * 游戏信息接口
 */
export interface Game {
  /** 游戏ID */
  id: number;
  /** 游戏名称 */
  name: string;
  /** 游戏分类 */
  category: GameCategory;
  /** 游戏描述 */
  description: string;
  /** 游戏封面图 */
  cover?: string;
  /** 游戏标签 */
  tags: string[];
  /** 玩家数量 */
  players: number;
}

const GameAPI = {
  /**
   * 获取游戏列表
   *
   * @param category 游戏分类
   * @returns 游戏列表
   */
  getGameList(category?: GameCategory) {
    return request<any, Game[]>({
      url: `${GAME_BASE_URL}/list`,
      method: "get",
      params: category && category !== "all" ? { category } : undefined,
    });
  },

  /**
   * 获取游戏详情
   *
   * @param id 游戏ID
   * @returns 游戏详情
   */
  getGameDetail(id: number) {
    return request<any, Game>({
      url: `${GAME_BASE_URL}/${id}`,
      method: "get",
    });
  },

  /**
   * 开始游戏会话
   *
   * @param id 游戏ID
   * @returns 游戏会话信息
   */
  startGameSession(id: number) {
    return request<any, { sessionId: string; url: string }>({
      url: `${GAME_BASE_URL}/${id}/start`,
      method: "post",
    });
  },
};

export default GameAPI;
